﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using Shpm.System.Db;
using Shpm.App.Commons.Db.Beans.Inp;
using Shpm.App.Commons.Db.Beans.Master;
namespace Shpm.System.Auth.Dao
{
    public class SysUserMaintenanceDao : ShpmBaseDao
    {
        #region 常量
        private const string userClassNameAllow = "1";
        private const string userClassNameForbids = "2";
        
        public const string FIND_BY_MSTSYSUSER = "SysUserMaintenance.findByMstSysUser";
        public const string FIND_BY_CLASSNAME = "SysUserMaintenance.findByClassName";
        public const string FIND_BY_ALLCLASSNAME = "SysUserMaintenance.findByAllClassName";
        public const string FIND_BY_CLASSNAMEUSER = "SysUserMaintenance.findByClassNameUser";
        public const string FIND_BY_USERGROUP = "SysUserMaintenance.findByUserGroup";
        public const string FIND_BY_NSTGROUP = "SysUserMaintenance.findByMstGroup";
        public const string FIND_BY_USERPERMISSON = "SysUserMaintenance.findByUserPermission";
        public const string FIND_BY_TUSERGROUP = "SysUserMaintenance.findByTUserGroup";

        public const string INSTER_USERGROUP = "SysUserMaintenance.InsertUserGroup";
        public const string INSTER_USERPERMISSON = "SysUserMaintenance.InsertUserPermission";

        public const string UPDATE_SYSUSER = "SysUserMaintenance.UpdateSysUser";
        public const string UPDATE_USERPERMISSON = "SysUserMaintenance.UpdateUserPermission";

        public const string DELETE_USERGROUP = "SysUserMaintenance.DeleteUserGroup";
        public const string DELETE_USERPERMISSON = "SysUserMaintenance.DeleteUserPermission";
        public const string DELETE_USERGROUPUSERID = "SysUserMaintenance.DeleteUserGroupUserId";
        public const string DELETE_USERPERMISSONUSERID = "SysUserMaintenance.DeleteUserPermissionUserId";
        public const string DELETE_SYSUSER = "SysUserMaintenance.DeleteSysUser";
        # endregion

        public SysUserMaintenanceDao()
        {

        }
        /*
         *名称： FindByMstSysUser
         *功能： 读取用户信息
         *参数： paramBean
         *返回： ILIST
         *说明： 无
         */
        public IList FindByMstSysUser(MstSysUserBean paramBean)
        {
            return QueryForList(FIND_BY_MSTSYSUSER, paramBean);
        }
        /*
         *名称： FindByClassName
         *功能： 读取可赋予的权限
         *参数： paramBean
         *返回： ILIST
         *说明： 无
         */
        public IList FindByClassName(MstClassNameBean paramBean)
        {
            return QueryForList(FIND_BY_CLASSNAME, paramBean);
        }
        /*
         *名称： FindByAllClassName
         *功能： 读取超级用户的权限
         *参数： paramBean
         *返回： ILIST
         *说明： 无
         */
        public IList FindByAllClassName(MstClassNameBean paramBean)
        {
            return QueryForList(FIND_BY_ALLCLASSNAME, paramBean);
        }
        /*
         *名称： FindByClassNameUser
         *功能： 读取已赋予的权限
         *参数： paramBean
         *返回： ILIST
         *说明： 无
         */
        public IList FindByClassNameUser(MstClassNameBean paramBean)
        {
            return QueryForList(FIND_BY_CLASSNAMEUSER, paramBean);
        }
        /*
         *名称： FindByUserGroup
         *功能： 读取已添加的部门
         *参数： paramBean
         *返回： ILIST
         *说明： 无
         */
        public IList FindByUserGroup(InpUserGroupBean paramBean)
        {
            return QueryForList(FIND_BY_USERGROUP, paramBean);
        }
        /*
         *名称： FindByMstGroup
         *功能： 读取可添加的部门
         *参数： paramBean
         *返回： ILIST
         *说明： 无
         */
        public IList FindByMstGroup(MstGroupBean paramBean)
        {
            return QueryForList(FIND_BY_NSTGROUP, paramBean);
        }
        /*
         *名称： Load
         *功能： 判断该用户是否存在该权限
         *参数： paramBean
         *返回： OBJECT
         *说明： 无
         */
        public InpUserPermissionBean Load(InpUserPermissionBean paramBean)
        {
            return (InpUserPermissionBean)QueryForObject(FIND_BY_USERPERMISSON, paramBean);
        }
        /*
         *名称： UserGroupLoad
         *功能： 判断该用户是否存在于该部门
         *参数： paramBean
         *返回： OBJECT
         *说明： 无
         */
        public InpUserGroupBean UserGroupLoad(InpUserGroupBean paramBean)
        {
            return (InpUserGroupBean)QueryForObject(FIND_BY_TUSERGROUP, paramBean);
        }

        /*
         *名称： InsertUserGroup
         *功能： 添加部门
         *参数： paramBean
         *返回： OBJECT
         *说明： 无
         */
        public Object InsertUserGroup(InpUserGroupBean paramBean)
        {
            return base.Insert(INSTER_USERGROUP, paramBean);
        }
        /*
         *名称： InsertUserPermission
         *功能： 添加权限
         *参数： paramBean
         *返回： OBJECT
         *说明： 无
         */
        public Object InsertUserPermission(InpUserPermissionBean paramBean)
        {
            return base.Insert(INSTER_USERPERMISSON, paramBean);
        }
        /*
         *名称： UpdateSysUser
         *功能： 更改密码
         *参数： paramBean
         *返回： OBJECT
         *说明： 无
         */
        public int UpdateSysUser(MstSysUserBean paramBean)
        {
            return base.Update(UPDATE_SYSUSER, paramBean);
        }
        /*
         *名称： UpdateUserPermission
         *功能： 删除已赋予的权限
         *参数： paramBean
         *返回： OBJECT
         *说明： 无
         */
        public int UpdateUserPermission(InpUserPermissionBean paramBean)
        {
            return base.Update(UPDATE_USERPERMISSON, paramBean);
        }
        /*
         *名称： DeleteUserGroup
         *功能： 删除用户用户已有的部门
         *参数： paramBean
         *返回： int
         *说明： 无
         */
        public int DeleteUserGroup(InpUserGroupBean paramBean)
        {
            return base.Delete(DELETE_USERGROUP, paramBean);
        }
        /*
         *名称： DeleteUserPermission
         *功能： 删除用户用户已有的部门
         *参数： paramBean
         *返回： int
         *说明： 无
         */
        public int DeleteUserPermission(InpUserPermissionBean paramBean)
        {
            return base.Delete(DELETE_USERPERMISSON, paramBean);
        }
        /*
         *名称： DeleteUserGroupUserId
         *功能： 删除用户
         *参数： paramBean
         *返回： int
         *说明： 无
         */
        public int DeleteUserGroupUserId(InpUserGroupBean paramBean)
        {
            return base.Delete(DELETE_USERGROUPUSERID, paramBean);
        }
        /*
         *名称： DeleteUserPermissionUserId
         *功能： 删除用户
         *参数： paramBean
         *返回： int
         *说明： 无
         */
        public int DeleteUserPermissionUserId(InpUserPermissionBean paramBean)
        {
            return base.Delete(DELETE_USERPERMISSONUSERID, paramBean);
        }
        /*
         *名称： DeleteSysUser
         *功能： 删除用户
         *参数： paramBean
         *返回： int
         *说明： 无
         */
        public int DeleteSysUser(MstSysUserBean paramBean)
        {
            return base.Delete(DELETE_SYSUSER, paramBean);
        }

        /*
         *名称： UpdateSysUserLst
         *功能： 事务处理函数
         *参数： paramBean
         *返回： datalist，str
         *说明： 无
         */
        public int UpdateSysUserLst(IList datalist,string str)
        {
            try
            {
                base.BeginTransaction();
                foreach (InpUserPermissionBean dataBean in datalist)
                {
                    if (this.Load(dataBean) != null)
                    {
                        dataBean.Allow = str;
                        this.UpdateUserPermission(dataBean);
                    }
                    else
                    {
                        dataBean.Allow = str;
                        this.InsertUserPermission(dataBean);
                    }
                }

                base.CommitTransaction();

                return datalist.Count;
            }
            catch (DataAccessException e)
            {
                Console.WriteLine("********** Exec  sql error! **********");
                Console.WriteLine(e.InnerException);
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                base.RollBackTransaction();
                return 0;
            }
            finally
            {

            }
        }
        /*
         *名称： InsertUserGroupLst
         *功能： 事务处理函数
         *参数： datalist
         *返回： int
         *说明： 无
         */
        public int InsertUserGroupLst(IList datalist)
        {
            try
            {
                base.BeginTransaction();
                foreach (InpUserGroupBean dataBean in datalist)
                {
                    if (this.UserGroupLoad(dataBean) == null)
                    {
                        this.InsertUserGroup(dataBean);
                    }
                }
                base.CommitTransaction();

                return datalist.Count;
            }
            catch (DataAccessException e)
            {
                Console.WriteLine("********** Exec  sql error! **********");
                Console.WriteLine(e.InnerException);
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                base.RollBackTransaction();
                return 0;
            }
            finally
            {

            }
        }



    }
}